package swb.api.com.service;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import swb.api.com.repository.dto.SysUser;
import swb.api.com.repository.dto.UserInfo;
import swb.api.com.vo.req.AdminCreateRequest;

import java.math.BigDecimal;

/**
 * 用户服务接口
 */
public interface UserService {

    /**
     * 微信登录处理
     * @param code 微信登录凭证
     * @return 用户信息
     */
    UserInfo wechatLogin(String code) throws Exception;

    UserInfo findUserByIdOrOpenidOrMobile(Long id, String openid, String mobile);

    /**
     * 绑定手机号
     * @param userId 用户ID（可选，如果是已登录用户）
     * @param mobile 手机号
     * @return 用户信息
     */
    UserInfo bindMobile(Long userId, String mobile);

    /**
     * 手机号短信验证码登录
     * @param mobile 手机号
     * @param code 短信验证码
     * @return 用户信息
     */
    UserInfo smsLogin(String mobile, String code);

    Page<UserInfo> findAll(Pageable pageable);

    void updateBalance(Long id, BigDecimal newBalance);

    SysUser findByUsername(String username);

    void createAdmin(AdminCreateRequest adminCreateRequest);
}
